/*
 * Copyright (c) 2013-2019 Huawei Technologies Co., Ltd. All rights reserved.
 * Copyright (c) 2020-2021 Huawei Device Co., Ltd. All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without modification,
 * are permitted provided that the following conditions are met:
 *
 * 1. Redistributions of source code must retain the above copyright notice, this list of
 * conditions and the following disclaimer.
 *
 * 2. Redistributions in binary form must reproduce the above copyright notice, this list
 * of conditions and the following disclaimer in the documentation and/or other materials
 * provided with the distribution.
 *
 * 3. Neither the name of the copyright holder nor the names of its contributors may be used
 * to endorse or promote products derived from this software without specific prior written
 * permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */

#include "stdio.h"
#include "It_os_adapt.h"

#ifdef __cplusplus
#if __cplusplus
extern "C" {
#endif /* __cpluscplus */
#endif /* __cpluscplus */

extern int OsShellCmdWriteProc(int argc, char **argv);

#define MAX_CONTAINER_NUM 5
static char* arryEntries[MAX_CONTAINER_NUM] = {"max_mnt_container", "max_pid_container", "max_user_container",
"max_net_container", "max_uts_container"};

static int nInitArry[MAX_CONTAINER_NUM] = {61, 54, 49, 44, 41};

UINT32 WriteContainer(char * strFile, int index)
{
    char szBuf[16];
    memset(szBuf, 0, 16);
    sprintf(szBuf, "%ld", nInitArry[index]);

    char *argStrs[3];
    argStrs[0] = szBuf;
    argStrs[1] = ">>";
    argStrs[2] = strFile;
    OsShellCmdWriteProc(3, argStrs);
    return 0;
}

static UINT32 Testcase(void)
{
    char szFile[256] = {0};
    for(int i = 0; i < MAX_CONTAINER_NUM; i++)
    {
        sprintf(szFile, "/proc/sys/user/%s", arryEntries[i]);
        WriteContainer(szFile, i);
    }
    printf("-------External test can only be carried out after startup-----\n");
    return LOS_OK;
}

void ItSysUserTest001(void)
{
    TEST_ADD_CASE("ItLosProc001", Testcase, TEST_LOS, TEST_TASK, TEST_LEVEL0, TEST_FUNCTION);
}

#ifdef __cplusplus
#if __cplusplus
}
#endif /* __cpluscplus */
#endif /* __cpluscplus */
